/************************************************************************
*Implementacion de generador de comandos de 3 direcciones               *
*Author     :   Simon Emmanuel Gutierrez Brida                          *
*Version    :   0.1                                                     *
*Fecha      :   Octubre/2011                                            *
*----------------------------------------------------                   *
*************************************************************************/

#include "gencom3d.h"
//#import "comspecs.h"
#include <stdlib.h>
#include <stdio.h>


Codigo3D* inicializarCodigo3D() {
    Codigo3D *nueva = (Codigo3D*) malloc(sizeof(Codigo3D));
    nueva->comandos = nuevaListaC3D();
    return nueva;
}

int agregar_comando(Codigo3D *codigo3d, Com3D *comando) {
    //int specs[3];
    //specs[0] = comandos_specs[obtenerComando(comando)][0];
    //specs[1] = comandos_specs[obtenerComando(comando)][1];
    //specs[2] = comandos_specs[obtenerComando(comando)][2];
    //bool error = false;
    //error = ((specs[0] != 999) && (comando->param1->tipo != specs[0]));
    //error |= ((specs[1] != 999) && (comando->param2->tipo != specs[1]));
    //error |= ((specs[2] != 999) && (comando->param3->tipo != specs[2]));
    //if (!error) {
        agregar_listaC3D(codigo3d->comandos, comando, longitud_listaC3D(codigo3d->comandos));
        return -1;
    //} else {
    //    return obtenerComando(comando);
    //}
}

Com3D* obtener_comando(Codigo3D *codigo3d, int index) {
    return obtener_listaC3D(codigo3d->comandos, index);
}

int cantidadComandos(Codigo3D *codigo3d) {
    return longitud_listaC3D(codigo3d->comandos);
}

void eliminar_comando(Codigo3D *codigo3d, int index) {
    eliminar_listaC3D(codigo3d->comandos, index);
}